Random number generation is an important aspect of many digital and electronic applications. For example, in the field of cryptography, random number generation is key to encryption algorithms. A random bit stream is a sequence of binary signals lacking discernible patterns or repetition over time.
In electrical circuitry, a random bit stream may be generated from a source that naturally exhibits random characteristics. For example, thermal noise in a CMOS field effect transistor (FET) channel injects a random component into the value of the current passing through that channel which can then be amplified to obtain a signal that is sufficiently random for a particular use. It is generally not possible to obtain a purely random signal by practical means, although it is possible in theory. For practical applications, what is sought is the ability to generate a signal that has a high degree of randomness, and thus a low degree of predictability, and which is suitable for use for the particular practical application.
However, generating a bit stream that has a sufficiently high degree of randomness based on a physical random phenomenon can be problematic. As is known in the art, the mere act of sampling the signal may interfere with the degree of randomness of the random physical phenomenon being measured. For example, in order to ensure a high degree of randomness, or unpredictability, the measurement circuitry should not introduce any bias into the probability that the measured value will be translated into a binary 0 or a binary 1. For example, if a sampling circuit measures a voltage level of noise at a given moment in time and compares it to a known threshold generated by the sampling circuitry, process and/or voltage and/or temperature variations may cause a drift in the threshold value over time, which may skew the sampling circuitry to translate more sampled values to one bit value or the other. Thus, the process is no longer truly random since there is no longer an equal chance of sampling a “1” or a “0”.
Current random bit stream generators inject a bias into the random bit stream generators that reduces the degree of unpredictability of the bit stream. A need exists for a method and an apparatus for generating a bit stream that has a sufficiently high degree of randomness (i.e, unpredictability) to be usable for a particular application. In particular, it would be desirable to generate a bit stream from a naturally occurring randomness source within the random bit generator circuitry itself. In addition, a need exists for preventing drift from randomness or unpredictability over time due to process and/or voltage and/or temperature variations.